# coding=utf-8
import os


class BaseConfig(object):
    PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://%s:%s@%s:%d/%s?charset=utf8&use_unicode=0" % (
        'root', '123456',
        '172.16.3.192', 3307,
        'ucloud-master'
    )

    # 自动回收连接的秒数。这对 MySQL 是必须的，默认 情况下 MySQL 会自动移除闲置 8 小时或者以上的连接。 需要注意地是如果使用 MySQL 的话， Flask-SQLAlchemy 会自动地设置这个值为 2 小时。
    SQLALCHEMY_POOL_RECYCLE = 1200
    # 控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。
    SQLALCHEMY_MAX_OVERFLOW = 10

    DEBUG = False

    ENABLED_MODULES = (
        'common',
        'app',
        'zone',
        'apply',
        'loadLevel',
        'agent',
        'postpone',
        'status',
        'machine',
        'operation',
        'thread',
        # 'notify',
        'api',
    )

    AUTHORIZATIONS = {
        'oauth2_password': {
            'type': 'oauth2',
            'flow': 'password',
            'scopes': {},
            'tokenUrl': '/auth/oauth2/token',
        },
    }

    JOBS = [
        {
            'id': 'recover',
            'func': 'app.modules.common.scheduler:recover',
            'args': (),
            'trigger': {
                'type': 'cron',
                'day_of_week': 6,
                'hour': 16
            }
        }
    ]

    SWAGGER_UI_JSONEDITOR = True
    SWAGGER_UI_OAUTH_CLIENT_ID = 'documentation'
    SWAGGER_UI_OAUTH_REALM = 'Authentication for ucloud-master documentation'
    SWAGGER_UI_OAUTH_APP_NAME = 'ucloud-master documentation'

    SQLALCHEMY_TRACK_MODIFICATIONS = True
    CSRF_ENABLED = True

    ROLE_ADMIN_ID = 1

    BEETLE_AUTH_URL = 'http://172.16.3.192:5001/api/v1/login/info'

    NOTIFY_ASYNC_MODE = None

    INTEGRATION_AGENT = ['172.16.3.207', '172.16.3.205']


class DevelopmentConfig(BaseConfig):
    DEBUG = False


class TestingConfig(BaseConfig):
    DEBUG = True


class ProductionConfig(BaseConfig):
    pass


class LocalConfig(BaseConfig):
    DEBUG = True


class AuthConfig(object):
    pass
